

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
    <style>
    /* base */
    html,
    body,
    .container {
      width: 100%;
      height: 100%;
    }

    a,
    a:link,
    a:visited {
      text-decoration: none;
      color: inherit;
    }

    ul {
      list-style: none;
    }

    *,
    ::before,
    ::after {
      box-sizing: border-box;
      margin: 0;
      padding: 0;
    }

    *:focus {
      outline: 0;
    }

    .container {
      display: flex;
      padding-top: 20px;
    }

    /* Nav */
    .container .doc-nav {
      position: fixed;
      height: 100%;
      margin: 0 30px 0 40px;
      width: 280px;
    }

    .doc-nav .nav-header {
      display: flex;
      align-items: center;
      box-sizing: border-box;
      background-color: rgb(240, 241, 242);
      height: 40px;
      padding: 16px;
      font-size: 18px;
      font-weight: 500;
      color: rgb(62, 64, 66);
      cursor: pointer;
    }

    .doc-nav .nav-content {
      height: calc(100% - 40px);
      overflow-y: auto;
      color: rgb(32, 34, 36);
    }

    .doc-nav .nav-content .nav-list,
    .doc-nav .nav-content .nav-sub-list {
      line-height: 1.5rem;
    }

    .doc-nav .nav-content .nav-label {
      display: inline-block;
      position: relative;
      padding: 2px 0 2px 20px;
      margin-bottom: 4px;
    }

    .doc-nav .nav-content .nav-sub-label {
      position: relative;
      padding: 2px 0 2px 40px;
      font-size: 14px;
    }

    .doc-nav .nav-content .nav-sub-label:hover {
      text-decoration: underline;
    }

    .doc-nav .nav-content .nav-list .nav-label.group::before {
      border-bottom: 0.25rem solid transparent;
      border-left: 0.25rem solid #6e7072;
      border-right: 0;
      border-top: 0.25rem solid transparent;
      content: '';
      display: block;
      height: 0;
      left: 0.5rem;
      position: absolute;
      top: 0.625rem;
      transition: transform 0.1s linear;
      width: 0;
    }

    .doc-nav .nav-content .nav-list .nav-label.group.active::before {
      transform: rotate(90deg);
    }

    /* doc content */
    .container .doc-content {
      position: fixed;
      height: 100%;
      width: calc(100% - 80px - 40px - 30px - 240px);
      right: 0%;
      overflow-y: auto;
    }

    .doc-title {
      border-bottom: 1px solid #dcdee0;
      font-size: 22px;
      margin: 8px 0 0;
      padding-bottom: 16px;
    }

    .doc-content h3 {
      font-size: 24px;
      font-weight: 600;
      margin: 24px 0;
    }

    .doc-content h4 {
      font-size: 22px;
      font-weight: 500;
      margin: 30px 0 8px;
    }

    .doc-content h4 span {
      color: #007d9c;
    }

    .doc-content .doc-declare {
      background-color: #fafafa;
      border-radius: 5px;
      border: 1px solid #ccc;
      font-size: 14px;
      overflow-x: auto;
      padding: 10px;
      tab-size: 4;
      line-height: 20px;
    }

    .doc-content .doc-comment {
      font-size: 16px;
      margin: 16px 0;
      line-height: 24px;
      word-break: break-word;
    }
  </style>

</head>
<body>
  <div class="container">
    <div class="doc-nav">
      <a href="#Documentation" class="nav-header">Documentation</a>
      <nav class="nav-content">
        <ul class="nav-list">
          <li>
            <a href="#includes" class="nav-label">Includes</a>
             
            <ul class="nav-sub-list">

              <li>
                <a href="#netif/ppp/ppp_opts.h" class="nav-sub-label">netif/ppp/ppp_opts.h</a>
              </li>
      

              <li>
                <a href="#lwip/def.h" class="nav-sub-label">lwip/def.h</a>
              </li>
      

              <li>
                <a href="#lwip/stats.h" class="nav-sub-label">lwip/stats.h</a>
              </li>
      

              <li>
                <a href="#lwip/mem.h" class="nav-sub-label">lwip/mem.h</a>
              </li>
      

              <li>
                <a href="#lwip/netif.h" class="nav-sub-label">lwip/netif.h</a>
              </li>
      

              <li>
                <a href="#lwip/sys.h" class="nav-sub-label">lwip/sys.h</a>
              </li>
      

              <li>
                <a href="#lwip/timeouts.h" class="nav-sub-label">lwip/timeouts.h</a>
              </li>
      

              <li>
                <a href="#lwip/ip6_addr.h" class="nav-sub-label">lwip/ip6_addr.h</a>
              </li>
      

              <li>
                <a href="#fsm.h" class="nav-sub-label">fsm.h</a>
              </li>
      

              <li>
                <a href="#lcp.h" class="nav-sub-label">lcp.h</a>
              </li>
      

              <li>
                <a href="#ccp.h" class="nav-sub-label">ccp.h</a>
              </li>
      

              <li>
                <a href="#mppe.h" class="nav-sub-label">mppe.h</a>
              </li>
      

              <li>
                <a href="#ipcp.h" class="nav-sub-label">ipcp.h</a>
              </li>
      

              <li>
                <a href="#ipv6cp.h" class="nav-sub-label">ipv6cp.h</a>
              </li>
      

              <li>
                <a href="#upap.h" class="nav-sub-label">upap.h</a>
              </li>
      

              <li>
                <a href="#chap-new.h" class="nav-sub-label">chap-new.h</a>
              </li>
      

              <li>
                <a href="#eap.h" class="nav-sub-label">eap.h</a>
              </li>
      

              <li>
                <a href="#vj.h" class="nav-sub-label">vj.h</a>
              </li>
      
            </ul>
            
          </li>
          <li>
            <a href="#macros" class="nav-label">Macros</a>
             
            <ul class="nav-sub-list">

              <li>
                <a href="#PPP_H" class="nav-sub-label">PPP_H</a>
              </li>
      

              <li>
                <a href="#PPP_OPTIONS" class="nav-sub-label">PPP_OPTIONS</a>
              </li>
      

              <li>
                <a href="#PPP_NOTIFY" class="nav-sub-label">PPP_NOTIFY</a>
              </li>
      

              <li>
                <a href="#PPP_REMOTENAME" class="nav-sub-label">PPP_REMOTENAME</a>
              </li>
      

              <li>
                <a href="#PPP_IDLETIMELIMIT" class="nav-sub-label">PPP_IDLETIMELIMIT</a>
              </li>
      

              <li>
                <a href="#PPP_LCP_ADAPTIVE" class="nav-sub-label">PPP_LCP_ADAPTIVE</a>
              </li>
      

              <li>
                <a href="#PPP_MAXCONNECT" class="nav-sub-label">PPP_MAXCONNECT</a>
              </li>
      

              <li>
                <a href="#PPP_ALLOWED_ADDRS" class="nav-sub-label">PPP_ALLOWED_ADDRS</a>
              </li>
      

              <li>
                <a href="#PPP_PROTOCOLNAME" class="nav-sub-label">PPP_PROTOCOLNAME</a>
              </li>
      

              <li>
                <a href="#PPP_STATS_SUPPORT" class="nav-sub-label">PPP_STATS_SUPPORT</a>
              </li>
      

              <li>
                <a href="#DEFLATE_SUPPORT" class="nav-sub-label">DEFLATE_SUPPORT</a>
              </li>
      

              <li>
                <a href="#BSDCOMPRESS_SUPPORT" class="nav-sub-label">BSDCOMPRESS_SUPPORT</a>
              </li>
      

              <li>
                <a href="#PREDICTOR_SUPPORT" class="nav-sub-label">PREDICTOR_SUPPORT</a>
              </li>
      

              <li>
                <a href="#PPP_HDRLEN" class="nav-sub-label">PPP_HDRLEN</a>
              </li>
      

              <li>
                <a href="#PPP_FCSLEN" class="nav-sub-label">PPP_FCSLEN</a>
              </li>
      

              <li>
                <a href="#PPP_PHASE_DEAD" class="nav-sub-label">PPP_PHASE_DEAD</a>
              </li>
      

              <li>
                <a href="#PPP_PHASE_MASTER" class="nav-sub-label">PPP_PHASE_MASTER</a>
              </li>
      

              <li>
                <a href="#PPP_PHASE_HOLDOFF" class="nav-sub-label">PPP_PHASE_HOLDOFF</a>
              </li>
      

              <li>
                <a href="#PPP_PHASE_INITIALIZE" class="nav-sub-label">PPP_PHASE_INITIALIZE</a>
              </li>
      

              <li>
                <a href="#PPP_PHASE_SERIALCONN" class="nav-sub-label">PPP_PHASE_SERIALCONN</a>
              </li>
      

              <li>
                <a href="#PPP_PHASE_DORMANT" class="nav-sub-label">PPP_PHASE_DORMANT</a>
              </li>
      

              <li>
                <a href="#PPP_PHASE_ESTABLISH" class="nav-sub-label">PPP_PHASE_ESTABLISH</a>
              </li>
      

              <li>
                <a href="#PPP_PHASE_AUTHENTICATE" class="nav-sub-label">PPP_PHASE_AUTHENTICATE</a>
              </li>
      

              <li>
                <a href="#PPP_PHASE_CALLBACK" class="nav-sub-label">PPP_PHASE_CALLBACK</a>
              </li>
      

              <li>
                <a href="#PPP_PHASE_NETWORK" class="nav-sub-label">PPP_PHASE_NETWORK</a>
              </li>
      

              <li>
                <a href="#PPP_PHASE_RUNNING" class="nav-sub-label">PPP_PHASE_RUNNING</a>
              </li>
      

              <li>
                <a href="#PPP_PHASE_TERMINATE" class="nav-sub-label">PPP_PHASE_TERMINATE</a>
              </li>
      

              <li>
                <a href="#PPP_PHASE_DISCONNECT" class="nav-sub-label">PPP_PHASE_DISCONNECT</a>
              </li>
      

              <li>
                <a href="#PPPERR_NONE" class="nav-sub-label">PPPERR_NONE</a>
              </li>
      

              <li>
                <a href="#PPPERR_PARAM" class="nav-sub-label">PPPERR_PARAM</a>
              </li>
      

              <li>
                <a href="#PPPERR_OPEN" class="nav-sub-label">PPPERR_OPEN</a>
              </li>
      

              <li>
                <a href="#PPPERR_DEVICE" class="nav-sub-label">PPPERR_DEVICE</a>
              </li>
      

              <li>
                <a href="#PPPERR_ALLOC" class="nav-sub-label">PPPERR_ALLOC</a>
              </li>
      

              <li>
                <a href="#PPPERR_USER" class="nav-sub-label">PPPERR_USER</a>
              </li>
      

              <li>
                <a href="#PPPERR_CONNECT" class="nav-sub-label">PPPERR_CONNECT</a>
              </li>
      

              <li>
                <a href="#PPPERR_AUTHFAIL" class="nav-sub-label">PPPERR_AUTHFAIL</a>
              </li>
      

              <li>
                <a href="#PPPERR_PROTOCOL" class="nav-sub-label">PPPERR_PROTOCOL</a>
              </li>
      

              <li>
                <a href="#PPPERR_PEERDEAD" class="nav-sub-label">PPPERR_PEERDEAD</a>
              </li>
      

              <li>
                <a href="#PPPERR_IDLETIMEOUT" class="nav-sub-label">PPPERR_IDLETIMEOUT</a>
              </li>
      

              <li>
                <a href="#PPPERR_CONNECTTIME" class="nav-sub-label">PPPERR_CONNECTTIME</a>
              </li>
      

              <li>
                <a href="#PPPERR_LOOPBACK" class="nav-sub-label">PPPERR_LOOPBACK</a>
              </li>
      

              <li>
                <a href="#PPP_AUTH_SUPPORT" class="nav-sub-label">PPP_AUTH_SUPPORT</a>
              </li>
      

              <li>
                <a href="#PPPAUTHTYPE_NONE" class="nav-sub-label">PPPAUTHTYPE_NONE</a>
              </li>
      

              <li>
                <a href="#PPPAUTHTYPE_PAP" class="nav-sub-label">PPPAUTHTYPE_PAP</a>
              </li>
      

              <li>
                <a href="#PPPAUTHTYPE_CHAP" class="nav-sub-label">PPPAUTHTYPE_CHAP</a>
              </li>
      

              <li>
                <a href="#PPPAUTHTYPE_MSCHAP" class="nav-sub-label">PPPAUTHTYPE_MSCHAP</a>
              </li>
      

              <li>
                <a href="#PPPAUTHTYPE_MSCHAP_V2" class="nav-sub-label">PPPAUTHTYPE_MSCHAP_V2</a>
              </li>
      

              <li>
                <a href="#PPPAUTHTYPE_EAP" class="nav-sub-label">PPPAUTHTYPE_EAP</a>
              </li>
      

              <li>
                <a href="#PPPAUTHTYPE_ANY" class="nav-sub-label">PPPAUTHTYPE_ANY</a>
              </li>
      

              <li>
                <a href="#ppp_set_auth_required(ppp, boolval)" class="nav-sub-label">ppp_set_auth_required(ppp, boolval)</a>
              </li>
      

              <li>
                <a href="#ppp_set_ipcp_ouraddr(ppp, addr)" class="nav-sub-label">ppp_set_ipcp_ouraddr(ppp, addr)</a>
              </li>
      

              <li>
                <a href="#ppp_set_ipcp_hisaddr(ppp, addr)" class="nav-sub-label">ppp_set_ipcp_hisaddr(ppp, addr)</a>
              </li>
      

              <li>
                <a href="#ppp_set_ipcp_dnsaddr(ppp, index, addr)" class="nav-sub-label">ppp_set_ipcp_dnsaddr(ppp, index, addr)</a>
              </li>
      

              <li>
                <a href="#ppp_set_usepeerdns(ppp, boolval)" class="nav-sub-label">ppp_set_usepeerdns(ppp, boolval)</a>
              </li>
      

              <li>
                <a href="#PPP_MPPE_DISABLE" class="nav-sub-label">PPP_MPPE_DISABLE</a>
              </li>
      

              <li>
                <a href="#PPP_MPPE_ENABLE" class="nav-sub-label">PPP_MPPE_ENABLE</a>
              </li>
      

              <li>
                <a href="#PPP_MPPE_ALLOW_STATEFUL" class="nav-sub-label">PPP_MPPE_ALLOW_STATEFUL</a>
              </li>
      

              <li>
                <a href="#PPP_MPPE_REFUSE_40" class="nav-sub-label">PPP_MPPE_REFUSE_40</a>
              </li>
      

              <li>
                <a href="#PPP_MPPE_REFUSE_128" class="nav-sub-label">PPP_MPPE_REFUSE_128</a>
              </li>
      

              <li>
                <a href="#ppp_set_listen_time(ppp, intval)" class="nav-sub-label">ppp_set_listen_time(ppp, intval)</a>
              </li>
      

              <li>
                <a href="#ppp_set_passive(ppp, boolval)" class="nav-sub-label">ppp_set_passive(ppp, boolval)</a>
              </li>
      

              <li>
                <a href="#ppp_set_silent(ppp, boolval)" class="nav-sub-label">ppp_set_silent(ppp, boolval)</a>
              </li>
      

              <li>
                <a href="#ppp_set_neg_pcomp(ppp, boolval)" class="nav-sub-label">ppp_set_neg_pcomp(ppp, boolval)</a>
              </li>
      

              <li>
                <a href="#ppp_set_neg_accomp(ppp, boolval)" class="nav-sub-label">ppp_set_neg_accomp(ppp, boolval)</a>
              </li>
      

              <li>
                <a href="#ppp_set_neg_asyncmap(ppp, boolval)" class="nav-sub-label">ppp_set_neg_asyncmap(ppp, boolval)</a>
              </li>
      

              <li>
                <a href="#ppp_set_asyncmap(ppp, intval)" class="nav-sub-label">ppp_set_asyncmap(ppp, intval)</a>
              </li>
      

              <li>
                <a href="#ppp_set_default(ppp)" class="nav-sub-label">ppp_set_default(ppp)</a>
              </li>
      

              <li>
                <a href="#PPPCTLG_UPSTATUS" class="nav-sub-label">PPPCTLG_UPSTATUS</a>
              </li>
      

              <li>
                <a href="#PPPCTLG_ERRCODE" class="nav-sub-label">PPPCTLG_ERRCODE</a>
              </li>
      

              <li>
                <a href="#PPPCTLG_FD" class="nav-sub-label">PPPCTLG_FD</a>
              </li>
      

              <li>
                <a href="#ppp_netif(ppp)" class="nav-sub-label">ppp_netif(ppp)</a>
              </li>
      

              <li>
                <a href="#ppp_set_netif_statuscallback(ppp, status_cb)" class="nav-sub-label">ppp_set_netif_statuscallback(ppp, status_cb)</a>
              </li>
      

              <li>
                <a href="#ppp_set_netif_linkcallback(ppp, link_cb)" class="nav-sub-label">ppp_set_netif_linkcallback(ppp, link_cb)</a>
              </li>
      
            </ul>
            
          </li>
          <li>
            <a href="#functions" class="nav-label">Functions</a>
             
            <ul class="nav-sub-list">

              <li>
                <a href="#ppp_set_auth" class="nav-sub-label">ppp_set_auth</a>
              </li>
      

              <li>
                <a href="#ppp_set_mppe" class="nav-sub-label">ppp_set_mppe</a>
              </li>
      

              <li>
                <a href="#ppp_set_notify_phase_callback" class="nav-sub-label">ppp_set_notify_phase_callback</a>
              </li>
      

              <li>
                <a href="#ppp_connect" class="nav-sub-label">ppp_connect</a>
              </li>
      

              <li>
                <a href="#ppp_listen" class="nav-sub-label">ppp_listen</a>
              </li>
      

              <li>
                <a href="#ppp_close" class="nav-sub-label">ppp_close</a>
              </li>
      

              <li>
                <a href="#ppp_free" class="nav-sub-label">ppp_free</a>
              </li>
      

              <li>
                <a href="#ppp_ioctl" class="nav-sub-label">ppp_ioctl</a>
              </li>
      
            </ul>
            
          </li>
          <li>
            <a href="#vars" class="nav-label">Vars</a>
            
            <ul class="nav-sub-list">
            
            </ul>
            
          </li>
          <li>
            <a href="#consts" class="nav-label">Consts</a>
            
            <ul class="nav-sub-list">
            
            </ul>
            
          </li>
          <li>
            <a href="#types" class="nav-label">Types</a>
            
            <ul class="nav-sub-list">
            
            </ul>
            
          </li>
          <li>
            <a href="#typedefs" class="nav-label">Typedefs</a>
             
            <ul class="nav-sub-list">

              <li>
                <a href="#ppp_pcb" class="nav-sub-label">ppp_pcb</a>
              </li>
      

              <li>
                <a href="#u_long" class="nav-sub-label">u_long</a>
              </li>
      

              <li>
                <a href="#u_int" class="nav-sub-label">u_int</a>
              </li>
      

              <li>
                <a href="#u_short" class="nav-sub-label">u_short</a>
              </li>
      

              <li>
                <a href="#u_char" class="nav-sub-label">u_char</a>
              </li>
      

              <li>
                <a href="#ppp_link_status_cb_fn" class="nav-sub-label">ppp_link_status_cb_fn</a>
              </li>
      

              <li>
                <a href="#ppp_settings;
" class="nav-sub-label">ppp_settings;
</a>
              </li>
      

              <li>
                <a href="#ppp_notify_phase_cb_fn" class="nav-sub-label">ppp_notify_phase_cb_fn</a>
              </li>
      
            </ul>
            
          </li>
        </ul>
      </nav>
    </div>
    <div class="doc-content">
      <h2 id="Documentation" class="doc-title">Documentation</h2>
      <h3 id="includes">Includes</h3>
      

      <h4 id="netif/ppp/ppp_opts.h"><span>netif/ppp/ppp_opts.h</span></h4>
      <pre class="doc-declare"><code>#include "netif/ppp/ppp_opts.h"
</code></pre>
      <pre class="doc-comment">#include "netif/ppp/ppp_opts.h"
</pre>

      <h4 id="lwip/def.h"><span>lwip/def.h</span></h4>
      <pre class="doc-declare"><code>#include "lwip/def.h"
</code></pre>
      <pre class="doc-comment">#include "lwip/def.h"
</pre>

      <h4 id="lwip/stats.h"><span>lwip/stats.h</span></h4>
      <pre class="doc-declare"><code>#include "lwip/stats.h"
</code></pre>
      <pre class="doc-comment">#include "lwip/stats.h"
</pre>

      <h4 id="lwip/mem.h"><span>lwip/mem.h</span></h4>
      <pre class="doc-declare"><code>#include "lwip/mem.h"
</code></pre>
      <pre class="doc-comment">#include "lwip/mem.h"
</pre>

      <h4 id="lwip/netif.h"><span>lwip/netif.h</span></h4>
      <pre class="doc-declare"><code>#include "lwip/netif.h"
</code></pre>
      <pre class="doc-comment">#include "lwip/netif.h"
</pre>

      <h4 id="lwip/sys.h"><span>lwip/sys.h</span></h4>
      <pre class="doc-declare"><code>#include "lwip/sys.h"
</code></pre>
      <pre class="doc-comment">#include "lwip/sys.h"
</pre>

      <h4 id="lwip/timeouts.h"><span>lwip/timeouts.h</span></h4>
      <pre class="doc-declare"><code>#include "lwip/timeouts.h"
</code></pre>
      <pre class="doc-comment">#include "lwip/timeouts.h"
</pre>

      <h4 id="lwip/ip6_addr.h"><span>lwip/ip6_addr.h</span></h4>
      <pre class="doc-declare"><code>#include "lwip/ip6_addr.h"
</code></pre>
      <pre class="doc-comment">#include "lwip/ip6_addr.h"
</pre>

      <h4 id="fsm.h"><span>fsm.h</span></h4>
      <pre class="doc-declare"><code>#include "fsm.h"
</code></pre>
      <pre class="doc-comment">#include "fsm.h"
</pre>

      <h4 id="lcp.h"><span>lcp.h</span></h4>
      <pre class="doc-declare"><code>#include "lcp.h"
</code></pre>
      <pre class="doc-comment">#include "lcp.h"
</pre>

      <h4 id="ccp.h"><span>ccp.h</span></h4>
      <pre class="doc-declare"><code>#include "ccp.h"
</code></pre>
      <pre class="doc-comment">#include "ccp.h"
</pre>

      <h4 id="mppe.h"><span>mppe.h</span></h4>
      <pre class="doc-declare"><code>#include "mppe.h"
</code></pre>
      <pre class="doc-comment">#include "mppe.h"
</pre>

      <h4 id="ipcp.h"><span>ipcp.h</span></h4>
      <pre class="doc-declare"><code>#include "ipcp.h"
</code></pre>
      <pre class="doc-comment">#include "ipcp.h"
</pre>

      <h4 id="ipv6cp.h"><span>ipv6cp.h</span></h4>
      <pre class="doc-declare"><code>#include "ipv6cp.h"
</code></pre>
      <pre class="doc-comment">#include "ipv6cp.h"
</pre>

      <h4 id="upap.h"><span>upap.h</span></h4>
      <pre class="doc-declare"><code>#include "upap.h"
</code></pre>
      <pre class="doc-comment">#include "upap.h"
</pre>

      <h4 id="chap-new.h"><span>chap-new.h</span></h4>
      <pre class="doc-declare"><code>#include "chap-new.h"
</code></pre>
      <pre class="doc-comment">#include "chap-new.h"
</pre>

      <h4 id="eap.h"><span>eap.h</span></h4>
      <pre class="doc-declare"><code>#include "eap.h"
</code></pre>
      <pre class="doc-comment">#include "eap.h"
</pre>

      <h4 id="vj.h"><span>vj.h</span></h4>
      <pre class="doc-declare"><code>#include "vj.h"
</code></pre>
      <pre class="doc-comment">#include "vj.h"
</pre>
      <h3 id="macros">Macros</h3>
      

      <h4 id="PPP_H">Marco <span>PPP_H</span></h4>
      <pre class="doc-declare"><code>#define PPP_H
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPP_OPTIONS">Marco <span>PPP_OPTIONS</span></h4>
      <pre class="doc-declare"><code>#define PPP_OPTIONS        0
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPP_NOTIFY">Marco <span>PPP_NOTIFY</span></h4>
      <pre class="doc-declare"><code>#define PPP_NOTIFY         0
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPP_REMOTENAME">Marco <span>PPP_REMOTENAME</span></h4>
      <pre class="doc-declare"><code>#define PPP_REMOTENAME     0
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPP_IDLETIMELIMIT">Marco <span>PPP_IDLETIMELIMIT</span></h4>
      <pre class="doc-declare"><code>#define PPP_IDLETIMELIMIT  0
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPP_LCP_ADAPTIVE">Marco <span>PPP_LCP_ADAPTIVE</span></h4>
      <pre class="doc-declare"><code>#define PPP_LCP_ADAPTIVE   0
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPP_MAXCONNECT">Marco <span>PPP_MAXCONNECT</span></h4>
      <pre class="doc-declare"><code>#define PPP_MAXCONNECT     0
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPP_ALLOWED_ADDRS">Marco <span>PPP_ALLOWED_ADDRS</span></h4>
      <pre class="doc-declare"><code>#define PPP_ALLOWED_ADDRS  0
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPP_PROTOCOLNAME">Marco <span>PPP_PROTOCOLNAME</span></h4>
      <pre class="doc-declare"><code>#define PPP_PROTOCOLNAME   0
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPP_STATS_SUPPORT">Marco <span>PPP_STATS_SUPPORT</span></h4>
      <pre class="doc-declare"><code>#define PPP_STATS_SUPPORT  0
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="DEFLATE_SUPPORT">Marco <span>DEFLATE_SUPPORT</span></h4>
      <pre class="doc-declare"><code>#define DEFLATE_SUPPORT    0
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="BSDCOMPRESS_SUPPORT">Marco <span>BSDCOMPRESS_SUPPORT</span></h4>
      <pre class="doc-declare"><code>#define BSDCOMPRESS_SUPPORT 0
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PREDICTOR_SUPPORT">Marco <span>PREDICTOR_SUPPORT</span></h4>
      <pre class="doc-declare"><code>#define PREDICTOR_SUPPORT  0
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPP_HDRLEN">Marco <span>PPP_HDRLEN</span></h4>
      <pre class="doc-declare"><code>#define PPP_HDRLEN 4 /* octets for standard ppp header */
</code></pre>
      <pre class="doc-comment">/*
 * The basic PPP frame.
 */</pre>

      <h4 id="PPP_FCSLEN">Marco <span>PPP_FCSLEN</span></h4>
      <pre class="doc-declare"><code>#define PPP_FCSLEN 2 /* octets for FCS */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPP_PHASE_DEAD">Marco <span>PPP_PHASE_DEAD</span></h4>
      <pre class="doc-declare"><code>#define PPP_PHASE_DEAD         0
</code></pre>
      <pre class="doc-comment">/*
 * Values for phase.
 */</pre>

      <h4 id="PPP_PHASE_MASTER">Marco <span>PPP_PHASE_MASTER</span></h4>
      <pre class="doc-declare"><code>#define PPP_PHASE_MASTER       1
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPP_PHASE_HOLDOFF">Marco <span>PPP_PHASE_HOLDOFF</span></h4>
      <pre class="doc-declare"><code>#define PPP_PHASE_HOLDOFF      2
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPP_PHASE_INITIALIZE">Marco <span>PPP_PHASE_INITIALIZE</span></h4>
      <pre class="doc-declare"><code>#define PPP_PHASE_INITIALIZE   3
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPP_PHASE_SERIALCONN">Marco <span>PPP_PHASE_SERIALCONN</span></h4>
      <pre class="doc-declare"><code>#define PPP_PHASE_SERIALCONN   4
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPP_PHASE_DORMANT">Marco <span>PPP_PHASE_DORMANT</span></h4>
      <pre class="doc-declare"><code>#define PPP_PHASE_DORMANT      5
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPP_PHASE_ESTABLISH">Marco <span>PPP_PHASE_ESTABLISH</span></h4>
      <pre class="doc-declare"><code>#define PPP_PHASE_ESTABLISH    6
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPP_PHASE_AUTHENTICATE">Marco <span>PPP_PHASE_AUTHENTICATE</span></h4>
      <pre class="doc-declare"><code>#define PPP_PHASE_AUTHENTICATE 7
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPP_PHASE_CALLBACK">Marco <span>PPP_PHASE_CALLBACK</span></h4>
      <pre class="doc-declare"><code>#define PPP_PHASE_CALLBACK     8
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPP_PHASE_NETWORK">Marco <span>PPP_PHASE_NETWORK</span></h4>
      <pre class="doc-declare"><code>#define PPP_PHASE_NETWORK      9
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPP_PHASE_RUNNING">Marco <span>PPP_PHASE_RUNNING</span></h4>
      <pre class="doc-declare"><code>#define PPP_PHASE_RUNNING      10
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPP_PHASE_TERMINATE">Marco <span>PPP_PHASE_TERMINATE</span></h4>
      <pre class="doc-declare"><code>#define PPP_PHASE_TERMINATE    11
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPP_PHASE_DISCONNECT">Marco <span>PPP_PHASE_DISCONNECT</span></h4>
      <pre class="doc-declare"><code>#define PPP_PHASE_DISCONNECT   12
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPPERR_NONE">Marco <span>PPPERR_NONE</span></h4>
      <pre class="doc-declare"><code>#define PPPERR_NONE        0 /* No error. */
</code></pre>
      <pre class="doc-comment">/* Error codes. */</pre>

      <h4 id="PPPERR_PARAM">Marco <span>PPPERR_PARAM</span></h4>
      <pre class="doc-declare"><code>#define PPPERR_PARAM       1 /* Invalid parameter. */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPPERR_OPEN">Marco <span>PPPERR_OPEN</span></h4>
      <pre class="doc-declare"><code>#define PPPERR_OPEN        2 /* Unable to open PPP session. */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPPERR_DEVICE">Marco <span>PPPERR_DEVICE</span></h4>
      <pre class="doc-declare"><code>#define PPPERR_DEVICE      3 /* Invalid I/O device for PPP. */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPPERR_ALLOC">Marco <span>PPPERR_ALLOC</span></h4>
      <pre class="doc-declare"><code>#define PPPERR_ALLOC       4 /* Unable to allocate resources. */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPPERR_USER">Marco <span>PPPERR_USER</span></h4>
      <pre class="doc-declare"><code>#define PPPERR_USER        5 /* User interrupt. */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPPERR_CONNECT">Marco <span>PPPERR_CONNECT</span></h4>
      <pre class="doc-declare"><code>#define PPPERR_CONNECT     6 /* Connection lost. */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPPERR_AUTHFAIL">Marco <span>PPPERR_AUTHFAIL</span></h4>
      <pre class="doc-declare"><code>#define PPPERR_AUTHFAIL    7 /* Failed authentication challenge. */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPPERR_PROTOCOL">Marco <span>PPPERR_PROTOCOL</span></h4>
      <pre class="doc-declare"><code>#define PPPERR_PROTOCOL    8 /* Failed to meet protocol. */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPPERR_PEERDEAD">Marco <span>PPPERR_PEERDEAD</span></h4>
      <pre class="doc-declare"><code>#define PPPERR_PEERDEAD    9 /* Connection timeout */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPPERR_IDLETIMEOUT">Marco <span>PPPERR_IDLETIMEOUT</span></h4>
      <pre class="doc-declare"><code>#define PPPERR_IDLETIMEOUT 10 /* Idle Timeout */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPPERR_CONNECTTIME">Marco <span>PPPERR_CONNECTTIME</span></h4>
      <pre class="doc-declare"><code>#define PPPERR_CONNECTTIME 11 /* Max connect time reached */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPPERR_LOOPBACK">Marco <span>PPPERR_LOOPBACK</span></h4>
      <pre class="doc-declare"><code>#define PPPERR_LOOPBACK    12 /* Loopback detected */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPP_AUTH_SUPPORT">Marco <span>PPP_AUTH_SUPPORT</span></h4>
      <pre class="doc-declare"><code>#define PPP_AUTH_SUPPORT (PAP_SUPPORT || CHAP_SUPPORT || EAP_SUPPORT)
</code></pre>
      <pre class="doc-comment">/* Whether auth support is enabled at all */</pre>

      <h4 id="PPPAUTHTYPE_NONE">Marco <span>PPPAUTHTYPE_NONE</span></h4>
      <pre class="doc-declare"><code>#define PPPAUTHTYPE_NONE     0
</code></pre>
      <pre class="doc-comment">/*
 * Set PPP authentication.
 *
 * Warning: Using PPPAUTHTYPE_ANY might have security consequences.
 * RFC 1994 says:
 *
 * In practice, within or associated with each PPP server, there is a
 * database which associates "user" names with authentication
 * information ("secrets").  It is not anticipated that a particular
 * named user would be authenticated by multiple methods.  This would
 * make the user vulnerable to attacks which negotiate the least secure
 * method from among a set (such as PAP rather than CHAP).  If the same
 * secret was used, PAP would reveal the secret to be used later with
 * CHAP.
 *
 * Instead, for each user name there should be an indication of exactly
 * one method used to authenticate that user name.  If a user needs to
 * make use of different authentication methods under different
 * circumstances, then distinct user names SHOULD be employed, each of
 * which identifies exactly one authentication method.
 *
 * Default is none auth type, unset (NULL) user and passwd.
 */</pre>

      <h4 id="PPPAUTHTYPE_PAP">Marco <span>PPPAUTHTYPE_PAP</span></h4>
      <pre class="doc-declare"><code>#define PPPAUTHTYPE_PAP      1
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPPAUTHTYPE_CHAP">Marco <span>PPPAUTHTYPE_CHAP</span></h4>
      <pre class="doc-declare"><code>#define PPPAUTHTYPE_CHAP     2
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPPAUTHTYPE_MSCHAP">Marco <span>PPPAUTHTYPE_MSCHAP</span></h4>
      <pre class="doc-declare"><code>#define PPPAUTHTYPE_MSCHAP   4
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPPAUTHTYPE_MSCHAP_V2">Marco <span>PPPAUTHTYPE_MSCHAP_V2</span></h4>
      <pre class="doc-declare"><code>#define PPPAUTHTYPE_MSCHAP_V2 8
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPPAUTHTYPE_EAP">Marco <span>PPPAUTHTYPE_EAP</span></h4>
      <pre class="doc-declare"><code>#define PPPAUTHTYPE_EAP      16
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="PPPAUTHTYPE_ANY">Marco <span>PPPAUTHTYPE_ANY</span></h4>
      <pre class="doc-declare"><code>#define PPPAUTHTYPE_ANY      255
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="ppp_set_auth_required(ppp, boolval)">Marco <span>ppp_set_auth_required(ppp, boolval)</span></h4>
      <pre class="doc-declare"><code>#define ppp_set_auth_required(ppp, boolval) (ppp->settings.auth_required = boolval)
</code></pre>
      <pre class="doc-comment">/*
 * If set, peer is required to authenticate. This is mostly necessary for PPP server support.
 *
 * Default is false.
 */</pre>

      <h4 id="ppp_set_ipcp_ouraddr(ppp, addr)">Marco <span>ppp_set_ipcp_ouraddr(ppp, addr)</span></h4>
      <pre class="doc-declare"><code>#define ppp_set_ipcp_ouraddr(ppp, addr) do { ppp->ipcp_wantoptions.ouraddr = ip4_addr_get_u32(addr); \
                                            ppp->ask_for_local = ppp->ipcp_wantoptions.ouraddr != 0; } while(0)
</code></pre>
      <pre class="doc-comment">/*
 * Set PPP interface "our" and "his" IPv4 addresses. This is mostly necessary for PPP server
 * support but it can also be used on a PPP link where each side choose its own IP address.
 *
 * Default is unset (0.0.0.0).
 */</pre>

      <h4 id="ppp_set_ipcp_hisaddr(ppp, addr)">Marco <span>ppp_set_ipcp_hisaddr(ppp, addr)</span></h4>
      <pre class="doc-declare"><code>#define ppp_set_ipcp_hisaddr(ppp, addr) (ppp->ipcp_wantoptions.hisaddr = ip4_addr_get_u32(addr))
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="ppp_set_ipcp_dnsaddr(ppp, index, addr)">Marco <span>ppp_set_ipcp_dnsaddr(ppp, index, addr)</span></h4>
      <pre class="doc-declare"><code>#define ppp_set_ipcp_dnsaddr(ppp, index, addr) (ppp->ipcp_allowoptions.dnsaddr[index] = ip4_addr_get_u32(addr))
</code></pre>
      <pre class="doc-comment">/*
 * Set DNS server addresses that are sent if the peer asks for them. This is mostly necessary
 * for PPP server support.
 *
 * Default is unset (0.0.0.0).
 */</pre>

      <h4 id="ppp_set_usepeerdns(ppp, boolval)">Marco <span>ppp_set_usepeerdns(ppp, boolval)</span></h4>
      <pre class="doc-declare"><code>#define ppp_set_usepeerdns(ppp, boolval) (ppp->settings.usepeerdns = boolval)
</code></pre>
      <pre class="doc-comment">/*
 * If set, we ask the peer for up to 2 DNS server addresses. Received DNS server addresses are
 * registered using the dns_setserver() function.
 *
 * Default is false.
 */</pre>

      <h4 id="PPP_MPPE_DISABLE">Marco <span>PPP_MPPE_DISABLE</span></h4>
      <pre class="doc-declare"><code>#define PPP_MPPE_DISABLE          0
</code></pre>
      <pre class="doc-comment">/* Disable MPPE (Microsoft Point to Point Encryption). This parameter is exclusive. */</pre>

      <h4 id="PPP_MPPE_ENABLE">Marco <span>PPP_MPPE_ENABLE</span></h4>
      <pre class="doc-declare"><code>#define PPP_MPPE_ENABLE           1
</code></pre>
      <pre class="doc-comment">/* Require the use of MPPE (Microsoft Point to Point Encryption). */</pre>

      <h4 id="PPP_MPPE_ALLOW_STATEFUL">Marco <span>PPP_MPPE_ALLOW_STATEFUL</span></h4>
      <pre class="doc-declare"><code>#define PPP_MPPE_ALLOW_STATEFUL   2
</code></pre>
      <pre class="doc-comment">/* Allow MPPE to use stateful mode. Stateless mode is still attempted first. */</pre>

      <h4 id="PPP_MPPE_REFUSE_40">Marco <span>PPP_MPPE_REFUSE_40</span></h4>
      <pre class="doc-declare"><code>#define PPP_MPPE_REFUSE_40        4
</code></pre>
      <pre class="doc-comment">/* Refuse the use of MPPE with 40-bit encryption. Conflict with PPP_MPPE_REFUSE_128. */</pre>

      <h4 id="PPP_MPPE_REFUSE_128">Marco <span>PPP_MPPE_REFUSE_128</span></h4>
      <pre class="doc-declare"><code>#define PPP_MPPE_REFUSE_128       8
</code></pre>
      <pre class="doc-comment">/* Refuse the use of MPPE with 128-bit encryption. Conflict with PPP_MPPE_REFUSE_40. */</pre>

      <h4 id="ppp_set_listen_time(ppp, intval)">Marco <span>ppp_set_listen_time(ppp, intval)</span></h4>
      <pre class="doc-declare"><code>#define ppp_set_listen_time(ppp, intval) (ppp->settings.listen_time = intval)
</code></pre>
      <pre class="doc-comment">/*
 * Wait for up to intval milliseconds for a valid PPP packet from the peer.
 * At the end of this  time, or when a valid PPP packet is received from the
 * peer, we commence negotiation by sending our first LCP packet.
 *
 * Default is 0.
 */</pre>

      <h4 id="ppp_set_passive(ppp, boolval)">Marco <span>ppp_set_passive(ppp, boolval)</span></h4>
      <pre class="doc-declare"><code>#define ppp_set_passive(ppp, boolval) (ppp->lcp_wantoptions.passive = boolval)
</code></pre>
      <pre class="doc-comment">/*
 * If set, we will attempt to initiate a connection but if no reply is received from
 * the peer, we will then just wait passively for a valid LCP packet from the peer.
 *
 * Default is false.
 */</pre>

      <h4 id="ppp_set_silent(ppp, boolval)">Marco <span>ppp_set_silent(ppp, boolval)</span></h4>
      <pre class="doc-declare"><code>#define ppp_set_silent(ppp, boolval) (ppp->lcp_wantoptions.silent = boolval)
</code></pre>
      <pre class="doc-comment">/*
 * If set, we will not transmit LCP packets to initiate a connection until a valid
 * LCP packet is received from the peer. This is what we usually call the server mode.
 *
 * Default is false.
 */</pre>

      <h4 id="ppp_set_neg_pcomp(ppp, boolval)">Marco <span>ppp_set_neg_pcomp(ppp, boolval)</span></h4>
      <pre class="doc-declare"><code>#define ppp_set_neg_pcomp(ppp, boolval) (ppp->lcp_wantoptions.neg_pcompression = \
                                        ppp->lcp_allowoptions.neg_pcompression = boolval)
</code></pre>
      <pre class="doc-comment">/*
 * If set, enable protocol field compression negotiation in both the receive and
 * the transmit direction.
 *
 * Default is true.
 */</pre>

      <h4 id="ppp_set_neg_accomp(ppp, boolval)">Marco <span>ppp_set_neg_accomp(ppp, boolval)</span></h4>
      <pre class="doc-declare"><code>#define ppp_set_neg_accomp(ppp, boolval) (ppp->lcp_wantoptions.neg_accompression = \
                                         ppp->lcp_allowoptions.neg_accompression = boolval)
</code></pre>
      <pre class="doc-comment">/*
 * If set, enable Address/Control compression in both the receive and the transmit
 * direction.
 *
 * Default is true.
 */</pre>

      <h4 id="ppp_set_neg_asyncmap(ppp, boolval)">Marco <span>ppp_set_neg_asyncmap(ppp, boolval)</span></h4>
      <pre class="doc-declare"><code>#define ppp_set_neg_asyncmap(ppp, boolval) (ppp->lcp_wantoptions.neg_asyncmap = \
                                           ppp->lcp_allowoptions.neg_asyncmap = boolval)
</code></pre>
      <pre class="doc-comment">/*
 * If set, enable asyncmap negotiation. Otherwise forcing all control characters to
 * be escaped for both the transmit and the receive direction.
 *
 * Default is true.
 */</pre>

      <h4 id="ppp_set_asyncmap(ppp, intval)">Marco <span>ppp_set_asyncmap(ppp, intval)</span></h4>
      <pre class="doc-declare"><code>#define ppp_set_asyncmap(ppp, intval) (ppp->lcp_wantoptions.asyncmap = intval)
</code></pre>
      <pre class="doc-comment">/*
 * This option sets the Async-Control-Character-Map (ACCM) for this end of the link.
 * The ACCM is a set of 32 bits, one for each of the ASCII control characters with
 * values from 0 to 31, where a 1 bit  indicates that the corresponding control
 * character should not be used in PPP packets sent to this system. The map is
 * an unsigned 32 bits integer where the least significant bit (00000001) represents
 * character 0 and the most significant bit (80000000) represents character 31.
 * We will then ask the peer to send these characters as a 2-byte escape sequence.
 *
 * Default is 0.
 */</pre>

      <h4 id="ppp_set_default(ppp)">Marco <span>ppp_set_default(ppp)</span></h4>
      <pre class="doc-declare"><code>#define ppp_set_default(ppp)        netif_set_default(ppp->netif)
</code></pre>
      <pre class="doc-comment">/*
 * Set a PPP interface as the default network interface
 * (used to output all packets for which no specific route is found).
 */</pre>

      <h4 id="PPPCTLG_UPSTATUS">Marco <span>PPPCTLG_UPSTATUS</span></h4>
      <pre class="doc-declare"><code>#define PPPCTLG_UPSTATUS 0
</code></pre>
      <pre class="doc-comment">/*
 * PPP IOCTL commands.
 *
 * Get the up status - 0 for down, non-zero for up.  The argument must
 * point to an int.
 */</pre>

      <h4 id="PPPCTLG_ERRCODE">Marco <span>PPPCTLG_ERRCODE</span></h4>
      <pre class="doc-declare"><code>#define PPPCTLG_ERRCODE 1
</code></pre>
      <pre class="doc-comment">/*
 * Get the PPP error code.  The argument must point to an int.
 * Returns a PPPERR_* value.
 */</pre>

      <h4 id="PPPCTLG_FD">Marco <span>PPPCTLG_FD</span></h4>
      <pre class="doc-declare"><code>#define PPPCTLG_FD      2
</code></pre>
      <pre class="doc-comment">/*
 * Get the fd associated with a PPP over serial
 */</pre>

      <h4 id="ppp_netif(ppp)">Marco <span>ppp_netif(ppp)</span></h4>
      <pre class="doc-declare"><code>#define ppp_netif(ppp)              (ppp->netif)
</code></pre>
      <pre class="doc-comment">/* Get the PPP netif interface */</pre>

      <h4 id="ppp_set_netif_statuscallback(ppp, status_cb)">Marco <span>ppp_set_netif_statuscallback(ppp, status_cb)</span></h4>
      <pre class="doc-declare"><code>#define ppp_set_netif_statuscallback(ppp, status_cb)      \
       netif_set_status_callback(ppp->netif, status_cb);
</code></pre>
      <pre class="doc-comment">/* Set an lwIP-style status-callback for the selected PPP device */</pre>

      <h4 id="ppp_set_netif_linkcallback(ppp, link_cb)">Marco <span>ppp_set_netif_linkcallback(ppp, link_cb)</span></h4>
      <pre class="doc-declare"><code>#define ppp_set_netif_linkcallback(ppp, link_cb)          \
       netif_set_link_callback(ppp->netif, link_cb);
</code></pre>
      <pre class="doc-comment">/* Set an lwIP-style link-callback for the selected PPP device */</pre>
      <h3 id="functions">Functions</h3>
      

      <h4 id="ppp_set_auth">Func <span>ppp_set_auth</span></h4>
      <pre class="doc-declare"><code>void ppp_set_auth(ppp_pcb *pcb, u8_t authtype, const char *user, const char *passwd);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="ppp_set_mppe">Func <span>ppp_set_mppe</span></h4>
      <pre class="doc-declare"><code>void ppp_set_mppe(ppp_pcb *pcb, u8_t flags);</code></pre>
      <pre class="doc-comment">/*
 * Set MPPE configuration
 *
 * Default is disabled.
 */</pre>

      <h4 id="ppp_set_notify_phase_callback">Func <span>ppp_set_notify_phase_callback</span></h4>
      <pre class="doc-declare"><code>void ppp_set_notify_phase_callback(ppp_pcb *pcb, ppp_notify_phase_cb_fn notify_phase_cb);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="ppp_connect">Func <span>ppp_connect</span></h4>
      <pre class="doc-declare"><code>err_t ppp_connect(ppp_pcb *pcb, u16_t holdoff);</code></pre>
      <pre class="doc-comment">/*
 * Initiate a PPP connection.
 *
 * This can only be called if PPP is in the dead phase.
 *
 * Holdoff is the time to wait (in seconds) before initiating
 * the connection.
 *
 * If this port connects to a modem, the modem connection must be
 * established before calling this.
 */</pre>

      <h4 id="ppp_listen">Func <span>ppp_listen</span></h4>
      <pre class="doc-declare"><code>err_t ppp_listen(ppp_pcb *pcb);</code></pre>
      <pre class="doc-comment">/*
 * Listen for an incoming PPP connection.
 *
 * This can only be called if PPP is in the dead phase.
 *
 * If this port connects to a modem, the modem connection must be
 * established before calling this.
 */</pre>

      <h4 id="ppp_close">Func <span>ppp_close</span></h4>
      <pre class="doc-declare"><code>err_t ppp_close(ppp_pcb *pcb, u8_t nocarrier);</code></pre>
      <pre class="doc-comment">/*
 * Initiate the end of a PPP connection.
 * Any outstanding packets in the queues are dropped.
 *
 * Setting nocarrier to 1 close the PPP connection without initiating the
 * shutdown procedure. Always using nocarrier = 0 is still recommended,
 * this is going to take a little longer time if your link is down, but
 * is a safer choice for the PPP state machine.
 *
 * Return 0 on success, an error code on failure.
 */</pre>

      <h4 id="ppp_free">Func <span>ppp_free</span></h4>
      <pre class="doc-declare"><code>err_t ppp_free(ppp_pcb *pcb);</code></pre>
      <pre class="doc-comment">/*
 * Release the control block.
 *
 * This can only be called if PPP is in the dead phase.
 *
 * You must use ppp_close() before if you wish to terminate
 * an established PPP session.
 *
 * Return 0 on success, an error code on failure.
 */</pre>

      <h4 id="ppp_ioctl">Func <span>ppp_ioctl</span></h4>
      <pre class="doc-declare"><code>err_t ppp_ioctl(ppp_pcb *pcb, u8_t cmd, void *arg);</code></pre>
      <pre class="doc-comment">/*
 * Get and set parameters for the given connection.
 * Return 0 on success, an error code on failure.
 */</pre>
      <h3 id="vars">Vars</h3>
      
      <h3 id="consts">Consts</h3>
      
      <h3 id="types">Types</h3>
      
      <h3 id="typedefs">Typedefs</h3>
      

      <h4 id="ppp_pcb">Typedef <span>ppp_pcb</span></h4>
      <pre class="doc-declare"><code>typedef struct ppp_pcb_s ppp_pcb;
</code></pre>
      <pre class="doc-comment">/*
 * Other headers require ppp_pcb definition for prototypes, but ppp_pcb
 * require some structure definition from other headers as well, we are
 * fixing the dependency loop here by declaring the ppp_pcb type then
 * by including headers containing necessary struct definition for ppp_pcb
 */</pre>

      <h4 id="u_long">Typedef <span>u_long</span></h4>
      <pre class="doc-declare"><code>typedef unsigned long u_long;
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="u_int">Typedef <span>u_int</span></h4>
      <pre class="doc-declare"><code>typedef unsigned int  u_int;
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="u_short">Typedef <span>u_short</span></h4>
      <pre class="doc-declare"><code>typedef unsigned short u_short;
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="u_char">Typedef <span>u_char</span></h4>
      <pre class="doc-declare"><code>typedef unsigned char u_char;</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="ppp_link_status_cb_fn">Typedef <span>ppp_link_status_cb_fn</span></h4>
      <pre class="doc-declare"><code>typedef void (*ppp_link_status_cb_fn)(ppp_pcb *pcb, int err_code, void *ctx);
</code></pre>
      <pre class="doc-comment">/* Link status callback function prototype */</pre>

      <h4 id="ppp_settings;
">Typedef <span>ppp_settings;
</span></h4>
      <pre class="doc-declare"><code>typedef struct ppp_settings_s {

#if PPP_SERVER && PPP_AUTH_SUPPORT
 unsigned int auth_required      :1;     /* Peer is required to authenticate */
 unsigned int null_login         :1;     /* Username of "" and a password of "" are acceptable */
#endif /* PPP_SERVER && PPP_AUTH_SUPPORT */
#if PPP_REMOTENAME
 unsigned int explicit_remote    :1;     /* remote_name specified with remotename opt */
#endif /* PPP_REMOTENAME */
#if PAP_SUPPORT
 unsigned int refuse_pap         :1;     /* Don't proceed auth. with PAP */
#endif /* PAP_SUPPORT */
#if CHAP_SUPPORT
 unsigned int refuse_chap        :1;     /* Don't proceed auth. with CHAP */
#endif /* CHAP_SUPPORT */
#if MSCHAP_SUPPORT
 unsigned int refuse_mschap      :1;     /* Don't proceed auth. with MS-CHAP */
 unsigned int refuse_mschap_v2   :1;     /* Don't proceed auth. with MS-CHAPv2 */
#endif /* MSCHAP_SUPPORT */
#if EAP_SUPPORT
 unsigned int refuse_eap         :1;     /* Don't proceed auth. with EAP */
#endif /* EAP_SUPPORT */
#if LWIP_DNS
 unsigned int usepeerdns         :1;     /* Ask peer for DNS adds */
#endif /* LWIP_DNS */
 unsigned int persist            :1;     /* Persist mode, always try to open the connection */
#if PRINTPKT_SUPPORT
 unsigned int hide_password      :1;     /* Hide password in dumped packets */
#endif /* PRINTPKT_SUPPORT */
 unsigned int noremoteip         :1;     /* Let him have no IP address */
 unsigned int lax_recv           :1;     /* accept control chars in asyncmap */
 unsigned int noendpoint         :1;     /* don't send/accept endpoint discriminator */
#if PPP_LCP_ADAPTIVE
 unsigned int lcp_echo_adaptive   :1;     /* request echo only if the link was idle */
#endif /* PPP_LCP_ADAPTIVE */
#if MPPE_SUPPORT
 unsigned int require_mppe        :1;     /* Require MPPE (Microsoft Point to Point Encryption) */
 unsigned int refuse_mppe_40      :1;     /* Allow MPPE 40-bit mode? */
 unsigned int refuse_mppe_128     :1;     /* Allow MPPE 128-bit mode? */
 unsigned int refuse_mppe_stateful :1;     /* Allow MPPE stateful mode? */
#endif /* MPPE_SUPPORT */

 u16_t listen_time;                /* time to listen first (ms), waiting for peer to send LCP packet */

#if PPP_IDLETIMELIMIT
 u16_t idle_time_limit;            /* Disconnect if idle for this many seconds */
#endif /* PPP_IDLETIMELIMIT */
#if PPP_MAXCONNECT
 u32_t maxconnect;                 /* Maximum connect time (seconds) */
#endif /* PPP_MAXCONNECT */

#if PPP_AUTH_SUPPORT
 /* auth data */
 const char *user;                  /* Username for PAP */
 const char *passwd;                /* Password for PAP, secret for CHAP */
#if PPP_REMOTENAME
 char remote_name[MAXNAMELEN  + 1]; /* Peer's name for authentication */
#endif /* PPP_REMOTENAME */

#if PAP_SUPPORT
 u8_t pap_timeout_time;       /* Timeout (seconds) for auth-req retrans. */
 u8_t pap_max_transmits;      /* Number of auth-reqs sent */
#if PPP_SERVER
 u8_t pap_req_timeout;        /* Time to wait for auth-req from peer */
#endif /* PPP_SERVER */
#endif /* PAP_SUPPPORT */

#if CHAP_SUPPORT
 u8_t chap_timeout_time;      /* Timeout (seconds) for retransmitting req */
 u8_t chap_max_transmits;     /* max # times to send challenge */
#if PPP_SERVER
 u8_t chap_rechallenge_time;  /* Time to wait for auth-req from peer */
#endif /* PPP_SERVER */
#endif /* CHAP_SUPPPORT */

#if EAP_SUPPORT
 u8_t eap_req_time;           /* Time to wait (for retransmit/fail) */
 u8_t eap_allow_req;          /* Max Requests allowed */
#if PPP_SERVER
 u8_t eap_timeout_time;       /* Time to wait (for retransmit/fail) */
 u8_t eap_max_transmits;      /* Max Requests allowed */
#endif /* PPP_SERVER */
#endif /* EAP_SUPPORT */

#endif /* PPP_AUTH_SUPPORT */

 u8_t fsm_timeout_time;           /* Timeout time in seconds */
 u8_t fsm_max_conf_req_transmits; /* Maximum Configure-Request transmissions */
 u8_t fsm_max_term_transmits;     /* Maximum Terminate-Request transmissions */
 u8_t fsm_max_nak_loops;          /* Maximum number of nak loops tolerated */

 u8_t lcp_loopbackfail;    /* Number of times we receive our magic number from the peer
                                 before deciding the link is looped-back. */
 u8_t lcp_echo_interval;   /* Interval between LCP echo-requests */
 u8_t lcp_echo_fails;      /* Tolerance to unanswered echo-requests */

} ppp_settings;
</code></pre>
      <pre class="doc-comment">/*
 * PPP configuration.
 */</pre>

      <h4 id="ppp_notify_phase_cb_fn">Typedef <span>ppp_notify_phase_cb_fn</span></h4>
      <pre class="doc-declare"><code>typedef void (*ppp_notify_phase_cb_fn)(ppp_pcb *pcb, u8_t phase, void *ctx);
</code></pre>
      <pre class="doc-comment">/*
 * Set a PPP notify phase callback.
 *
 * This can be used for example to set a LED pattern depending on the
 * current phase of the PPP session.
 */</pre>
    </div>
  </body>
</html>
            